# Comment
#
# <プラグイン概要>
# コメントを登録できる
#
# <使用方法>
# #comment
#
# ページの本文に複数のコメント投稿欄を設置可
# コメントを投稿すると、 #comment の直前の行にコメントデータが挿入される
#

require 'cgi/session'

#class Comment < WikiPlugin
module WikiPlugin::Comment::Function

  def init
    # commentが複数ある場合、ユニークになるように番号をふる
    @comment_no = 0 if @comment_no.nil?

    # 多重投稿チェック用にセッションを使用する
#    cgi = CGI.new
#    session = CGI::Session.new(cgi)
  end

  def inline
  end

  #
  # コメントを受け付けてデータを更新する
  #
  def action
    body = ''
    comment_no = 0
    @content = Content.find(:first, :conditions => ['title = ?', params[:id]])
    @content.body.each_line do |line|
      if line =~ /^#comment.*$/ then
        if comment_no == params[:comment_no].to_i then
          line = "#{line.chomp}\n"
          line += "- #{params[:msg]} -#{params[:name]}- #{DateTime.now.strftime('%Y-%m-%d %H:%M:%S')}\n"
        end
        comment_no += 1
      end
      body += line
    end
    if body != @content.body then
      @content.body = body
      @content.save
    end
#    content = Content.find(:first, :conditions => ['title = ?', @params[:id]])
#    ret_value = {}
#    ret_value[:ref] = content.title
#    @params

    flash[:notice] = "コメントを投稿しました"
  end

  #
  # コメントフォームを設置する
  #
  def convert

    # コメントIDを更新する
    html = <<-EOT
      <div>
      <form action="/#{WWW_DIR}#{(WWW_DIR.to_s == '') ? '' : '/'}#{URI.encode(@content.title)}/comment/plugin" method="post">
      <input type="hidden" name="comment_no" value="#{@comment_no}" />
      お名前: <input type="text" name="name" id="_p_comment_name_#{@comment_no}" style="width:15%;" />
      <input type="text"   name="msg" id="_p_comment_text_#{@comment_no}" style="width:50%;" />
      <input type="submit" name="comment" value="コメントの挿入" />
      </form>
      </div>
    EOT
#    @content.each_line do |line|
#      if line =~ /^#comment.*$/ then
#        @@comment_id += 1
#      end
#    end

    @comment_no += 1

    return html
  end
end
